//
// Created by Ge on 2024/3/6.
//

#ifndef INC_3DMODEL_MODEL_H
#define INC_3DMODEL_MODEL_H
#include "DataModel.h"
#include "../glm/glm.hpp"
#include "Mesh.h"
#include "../assimp/scene.h"
#include <vector>
#include <GLES2/gl2.h>

class Model
{
public:
    Model(GLchar* path)
    {
        loadModel(path);
    }
    //渲染模型，即依次渲染各个网格
    void draw(/*Shader shader*/);
    //销毁模型的所有网格
    void destroy();
private:
    //模型所包含的网格
    std::vector<Mesh> meshes;
    //模型文件所在目录
    std::string directory;
    //加载模型
    void loadModel(std::string path);
    //处理 aiScene 对象包含的节点和子节点
    void processNode(aiNode* node, const aiScene* scene);
    //生成网格
    Mesh processMesh(aiMesh* mesh, const aiScene* scene);
    //创建纹理并加载图像数据
    std::vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type, std::string typeName);
};





#endif //INC_3DMODEL_MODEL_H
